package com.gaj.entity.message;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 消息表
 * XXLX	消息类型	           特殊字段
 * 1	数据校验消息	     JYJG, SFCF
 * 3	数据发送消息	    CFLJ, WJDX, YXJ
 * 4	数据接收消息      	FSJG
 * 5	业务操作消息         	-
 * 6	业务接收消息         	-
 * 7	业务退回消息         	-
 * 20	数据流消息	        LZJD
 * 21	优先级调度消息	        YXJ
 * 22	预警消息	            -
 * @author gaj
 * @since 2024-01-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("message")
public class Message {

    /**
     * 消息记录ID（自增主键）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 平台统一编号（关联案件全流程）
     */
    private String pttybh;

    /**
     * 数据标识（关联数据包）
     */
    private String sjbs;

    /**
     * 消息类型代码（1=数据校验/3=数据发送/4=数据接收/5=业务操作/6=业务接收/7=业务退回/20=数据流/21=优先级调度/22=预警）
     */
    private Integer xxlx;

    /**
     * 案件编号
     */
    private String ajbh;

    /**
     * 案号
     */
    private String ah;

    /**
     * 案件名称
     */
    private String ajmc;

    /**
     * 业务类别代码（如1301=一审公诉）
     */
    private String ywlb;

    /**
     * 业务类别名称
     */
    private String ywlbmc;

    /**
     * 流程节点编号（如1301E=一审公诉-结案）
     */
    private String lcjdbh;

    /**
     * 接收单位编号（组织机构代码）
     */
    private String jsdwbh;

    /**
     * 接收单位名称
     */
    private String jsdwmc;

    /**
     * 发送单位编号（组织机构代码，平台发送为0）
     */
    private String fsdwbh;

    /**
     * 发送单位名称
     */
    private String fsdwmc;

    /**
     * 消息内容
     */
    private String xxnr;

    /**
     * 消息发送时间（格式：YYYY-MM-DD HH:MM:SS）
     */
    private LocalDateTime fssj;

    /**
     * 消息特有扩展字段（如数据发送消息的CFLJ/WJDX/YXJ；数据校验消息的JYJG/SFCF等）
     */
    private String extendFields;

    /**
     * 校验结果（仅数据校验消息用，XXLX=1；参考"BJCM业务代码标准-数据校验结果"，1=校验成功/2=校验失败；对应XML<JYJG>节点）
     */
    private Integer jyjg;

    /**
     * 是否重发（仅数据校验消息用，XXLX=1；参考"BJCM业务代码标准-数据重发代码"，1=需重发/0=无需重发；对应XML<SFCF>节点）
     */
    private Integer sfcf;

    /**
     * 数据包存放路径（仅数据发送消息用，XXLX=3；仅传文件名，如"1301_1301E_xxx.zip"；对应XML<CFLJ>节点）
     */
    private String cflj;

    /**
     * 文件大小（仅数据发送消息用，XXLX=3；单位：KB，如152=152KB；对应XML<WJDX>节点）
     */
    private Integer wjdx;

    /**
     * 数据优先级（仅数据发送消息用，XXLX=3；参考"BJCM业务代码标准-数据优先级"，1=普通/2=快速/3=紧急/4=特急；对应XML<YXJ>节点）
     */
    private Integer yxj;

    /**
     * 发送结果（仅数据接收消息用，XXLX=4；参考"BJCM业务代码标准-数据处理结果"，1=发送成功/2=发送失败；对应XML<FSJG>节点）
     */
    private Integer fsjg;

    /**
     * 数据流转阶段（仅数据流消息用，XXLX=20；参考"BJCM业务代码标准-数据流转阶段"，1=发送方前置机扫描/2=平台接收/3=推送接收方；对应XML<LZJD>节点）
     */
    private Integer lzjd;

    /**
     * 调度优先级（仅优先级调度消息用，XXLX=21；参考"BJCM业务代码标准-数据优先级"，1=普通/2=快速/3=紧急/4=特急；对应XML<YXJ>节点，与数据发送优先级场景区分）
     */
    private Integer yxjschedule;
}
